package com.zmzncs.common.common.util;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 类SeqUtils.java的实现描述：流水号生成
 *
 * @author jiangruofei 2020年04月17日 09:58:44
 */
public class SeqUtil {

    private static AtomicInteger incrSeq = new AtomicInteger(0);

    /**
     * 流水号生成
     * @param key
     * @return key + 13位时间戳 + 3位流水号
     */
    public static String generateNum(String key){
        StringBuffer sb = new StringBuffer();
        sb.append(key);
        sb.append(System.currentTimeMillis());
        sb.append(incrKey());
        return sb.toString();
    }

    private static String incrKey() {
        int seq = incrSeq.getAndIncrement();
        if( seq > 999){
            String str = seq +"";
            return str.substring(str.length() - 3);
        } else {
            return String.format("%03d",seq);
        }
    }

    public static void main(String[] args){
//        for( int i = 0 ;i<10002 ; i++) {
            System.out.println(generateNum("first"));
//        }
    }
}

    